package com.generic.array.demo2;

/**
 * 成功创建一个泛型数组的唯一方式，就是创建一个被擦除类型的新数组，然后对其转型
 * 
 * @author Administrator
 * 
 * @param <T>
 */
public class GenericArray<T> {

	private Object[] array;

	public GenericArray(int sz) {
		array = new Object[sz];
	}

	public void put(int index, T item) {
		array[index] = item;
	}

	public T get(int index) {
		return (T) array[index];
	}

	public T[] rep() {
		return (T[]) array;
	}

	public static void main(String[] args) {
		GenericArray<Integer> gai = new GenericArray<Integer>(10);
		for (int i = 0; i < 10; i++) {
			gai.put(i, i);
		}
		for (int i = 0; i < 10; i++) {
			System.out.println(gai.get(i));// 因为数组里存的就是T类型，所以转型是安全的
		}
		Integer[] ia = gai.rep();// 类型转换错误，因为实际运行的是Object[]
	}

}
